1. Field of Art
The disclosure relates generally to performing motion compensated deinterlacing, and more specifically to deinterlacing using a combination of directional interpolation, motion compensated deinterlacing, and motion adaptive deinterlacing.
2. Description of Related Art
Motion compensation describes a target image in terms of which section (specifically, macroblock) of a target frame came from which section of a reference frame. The motion compensation is often employed in video compression as well as video processing such as deinterlacing, noise reduction, and video stabilization. In order to perform the motion compensation, motion estimation must be performed before performing the motion compensation.
The motion estimation is the process of finding optimal or near-optimal motion vectors of macroblocks in the frames of a video sequence. When using the motion estimation, an assumption is made that objects in the scene have only translational motions. Under such an assumption, a macroblock of the frame is compared with macroblocks in the reference frame to choose the best matching macroblock in the reference frame. Generally, the search for the macroblock is conducted over a predetermined search area (i.e., search window) of the reference frame.
The motion estimation is the most computationally demanding process in image compression applications, and can require as much as 80% of the processor cycles spent in the video encoder. The simplest and most thorough way to perform motion estimation is to evaluate every possible macroblock (e.g., 16×16 pixels) in the search window of the reference frame, and select the best match. Typically, a sum of absolute differences (SAD) or sum of squared differences (SSD) computation is used to determine how closely the pixel region of the reference frame matches a macroblock of the target frame. The SAD or SSD is often computed for the luminance plane only, but can also include the chrominance planes. A relatively small search area of 48 pixels by 24 pixels, for example, contains 1024 possible 16×16 pixel regions at half-pixel resolution. Performing an SAD on the luminance plane only for one such region requires 256 subtractions, 256 absolute value operations, and 255 additions. Thus, not including the interpolation required for non-integer motion vectors, the SAD computations needed to exhaustively scan this search window for the best match require a total of 785,408 arithmetic operations per macro block, which equates to over 4.6 billion arithmetic operations per second at CIF (352 by 288 pixels) video resolution and a modest frame rate of 15 frames per second.
Accordingly, the motion estimation is a crucial operation in video compression and processing. Software or hardware dedicated to perform the motion estimation has been developed and is called a motion estimation engine. The motion estimation engine is very crucial to the performance of video compression and video processing. To enhance accuracy and speed, complex algorithms and dedicated circuits have been employed in the motion estimation engines.